package com.utils
{
	import flash.net.SharedObject;
	
	/**
	 *本地数据管理类  提供本地数据保存和提取
	 * @author Lufu
	 * 
	 */	
	public class SharedObjectUtil
	{
		private static var so:SharedObject = SharedObject.getLocal('UserData');
		
		/**
		 * 写入本地存储的数据
		 * @param object 关联数组 {}
		 * @param user 用户名
		 */		
		public static function writeData(key:String,value:*,user:String = 'user'):void{
			
			if(!so.data.userObject) so.data.userObject = new Object();
			if(!so.data.userObject[user]){
				trace(user + ':数据不存在创建用户数据集');
				so.data.userObject[user] = new Object();
			}
			
			so.data.userObject[user][key] = value;
			trace('用户:' + user,'-->数据刷新',key + ':' + value)
		}
		
		/**
		 * 根据用户名或键名返回本地对应数据
		 * @param user 用户名 user不赋值用默认用户 'user'  
		 * @param key 不指定值的话 返回用户数据集(Object) 指定值则返回具体的值
		 * @return 空值返回 null 非空返回之前保存的数据<返回无具体类型,注意数据类型>
		 */	
		public static function readData(user:String = 'user',key:String = 'null'):*{
			if(user == '') user = 'user';
			
			if(!so.data.userObject || !so.data.userObject[user]){
				
				trace(user,key,'数据不存在!');
				
				return null;
			}
			
			if(key == 'null'){
				
				trace('用户:<' + user + '>数据列表:');
				for(var key:String in so.data.userObject[user]){
					trace('-->' + key + ':' + so.data.userObject[user][key]);
				}
				return so.data.userObject[user];
				
			}else{
				
				trace('用户:' + user , key + ':' + so.data.userObject[user][key])
				return so.data.userObject[user][key];
				
			}
		}
		
		/**
		 * 删除指定的用户名
		 * @param user 用户名
		 */		
		public static function deleteUserData(user:String = 'user'):void{
			var tempObject:Object = new Object();
			
			for (var key:String in so.data.userObject) 
			{
				
				if(key == user){
					
					trace(user,'数据被清除!');
					
					continue;
					
				}
				
				tempObject[key] = so.data.userObject[key];
			}
			
			so.data.userObject = tempObject;
		}
		
		/**
		 * 清理本地保存数据
		 */		
		public static function clearData():void{
			so.clear();
			trace('数据清理成功！');
		}
		
		
		
		
		
		
		
		
		
		
	}
}